package enregistre;

import java.util.ArrayList;
import java.util.Iterator;

import vue_controleur.MiniEditeur;
import java.util.Observable;

//Caretaker du memento
public class Enregistreur extends Observable{
	
	private Boolean _modeEnregistrementActif = false;
	private ArrayList<Memento> _listEvenement = new ArrayList<Memento>();
	
	/**
	 * Nouvel enregistrement
	 * @param m
	 */
    public void addMemento(Memento m) { _listEvenement.add(m); }
    //public Memento getMemento(int index) { return _listEvenement.get(index); }
    
    /**
     * Methode pour savoir si on est en cour d'enregistrement
     * @return _modeEnregistrementActif
     */
    public Boolean getModeEnregistrementActif() {
		return _modeEnregistrementActif;
	}
    /**
     * Change l'etat d'enregistrement
     * @param modeEnregistrementActif
     */
	public void setModeEnregistrementActif(Boolean modeEnregistrementActif) {
		this._modeEnregistrementActif = modeEnregistrementActif;
		setChanged(); // Positionne son indicateur de changement
		notifyObservers(this); // Notification
	}
    
	/**
	 * Vide la table des enregistrements
	 */
	public void vider(){
		_listEvenement.clear();
	}
	
	/**
	 * Methode permetant de rejouer les action du tableau via l'editeur
	 * @see editeurImpl
	 */
	public void rejouer(){
		Iterator<Memento> evenements = _listEvenement.iterator();
		Memento m;
		while (evenements.hasNext()) {
			m = evenements.next();
			MiniEditeur.get().getEditeur().setMemento(m);
		}
	}
	
}
